package com.nifostasky.swing;

import javafx.scene.control.ToolBar;
import org.springframework.stereotype.Component;

import javax.swing.*;
import java.awt.*;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent;
import java.awt.event.KeyEvent;

/**
 * 自定义主页
 */
@Component
public class CustomIndexPage extends JFrame {
    //导航栏
    private JToolBar toolBar = null;
    //文本框
    private JTextField textField = null;
    //文本域
    private JTextArea textArea2 = null;
    //<<测试按钮点击次数>>
    private Integer testButton = 0;

    public CustomIndexPage(){
        //设置顶部导航栏
//        this.customToolBars();
        this.customJMenu();
        //设置内容
        this.contentPage();
        //初始化界面
        this.init();
    }

    /**
     * 初始化操作
     */
    private void init(){
        //设置标题,
        this.setTitle("swing主页");
        //设置窗口是否可关闭 此处可关闭
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //设置窗口大小
        this.setSize(1000,500);
        //设置窗口是否可见 此处可见
        this.setVisible(true);
    }

    /**
     * 导航栏 JToolBars形式
     */
    private void customToolBars(){
        //初始化导航栏
        toolBar = new JToolBar();
        //增加按钮
        JButton fileButton = new JButton("文件");
        JButton pageButton = new JButton("主页");
        JButton shareButton = new JButton("共享");
        JButton viewButton = new JButton("查看");
        toolBar.add(fileButton);
        toolBar.add(pageButton);
        toolBar.add(shareButton);
        toolBar.add(viewButton);
        //添加到主界面上
        this.add(toolBar, BorderLayout.PAGE_START);
    }

    /**
     * 导航栏2 : JMenu形式
     */
    private void customJMenu(){
        JMenuBar jMenuBar = new JMenuBar();
        //初始化导航栏
        JMenu fileMenu = new JMenu("文件(Q)");
        //设置快捷键
        fileMenu.setMnemonic(KeyEvent.VK_Q);
        //设置子内容, 并设置打开快捷键
        JMenuItem fileNewWindows = new JMenuItem("打开新窗口(A)",KeyEvent.VK_A);
        //设置组合打开快捷键
        fileNewWindows.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,KeyEvent.CTRL_MASK));
        //增加子按钮
        fileMenu.add(fileNewWindows);
        JMenuItem fileChoose = new JMenuItem("选项(S)", KeyEvent.VK_S);
        fileChoose.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,KeyEvent.CTRL_MASK));
        fileMenu.add(fileChoose);
        //添加分割符
        fileMenu.addSeparator();
        JMenuItem fileExit = new JMenuItem("退出", KeyEvent.VK_D);
        fileExit.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_D,KeyEvent.CTRL_MASK));
        fileMenu.add(fileExit);

        JMenu pageMenu = new JMenu("主页(W)");
        pageMenu.setMnemonic(KeyEvent.VK_W);
        JMenu shareMenu = new JMenu("共享(E)");
        shareMenu.setMnemonic(KeyEvent.VK_E);
        JMenu viewMenu = new JMenu("查看(R)");
        viewMenu.setMnemonic(KeyEvent.VK_R);
        jMenuBar.add(fileMenu);
        jMenuBar.add(pageMenu);
        jMenuBar.add(shareMenu);
        jMenuBar.add(viewMenu);
        jMenuBar.setVisible(true);
        this.add(jMenuBar,BorderLayout.PAGE_START);
//        this.getContentPane().add(jMenuBar);
//        this.add(jMenuBar);
    }

    /**
     * 设置主体
     */
    private void contentPage(){
        //定义一个面板,盒子布局
        JPanel jPanel = new JPanel();
        //添加一个盒子
        Box box1 = Box.createVerticalBox();
        //添加按钮
        box1.add(Box.createVerticalStrut(100));
        JButton jButton = new JButton("测试按钮");
        //添加点击事件
        jButton.addActionListener(e -> {
            testButton++;
            textArea2.setText("<<测试按钮>>被点击了,累计点击"+ testButton +"次");
        });
        box1.add(jButton);
        //添加文本域
        box1.add(Box.createVerticalStrut(100));
        textField = new JTextField();
        textField.addFocusListener(new FocusAdapter() {
            // 获取焦点时执行此方法
            @Override
            public void focusGained(FocusEvent e) {
                textArea2.setText("<<文本框>>获取到焦点");
            }
            // 失去焦点时执行的方法
            @Override
            public void focusLost(FocusEvent e) {
                textArea2.setText("<<文本框>>失去焦点");
            }
        });
        textField.addActionListener(i -> {
            textArea2.setText("<<文本框输入内容>>:" + textField.getText());
        });
        textField.setColumns(30);
        JTextArea textArea1 = new JTextArea();
        textArea2 = new JTextArea();
        textArea1.setText("请输入");
        textArea2.setText("这里将显示用户的操作信息");
        Box box2 = Box.createHorizontalBox();
        box2.add(textArea1);
        box2.add(textField);
        box1.add(box2);
        box1.add(textArea2);
        jPanel.add(box1);
        this.add(jPanel,BorderLayout.WEST);
//        this.getContentPane().add(jPanel);
    }

}
